]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
network: request periodic scans while the WiFi list is open
authorDan Williams <dcbw@redhat.com>
Tue, 21 Jun 2016 17:48:44 +0000 (12:48 -0500)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 11 Oct 2016 12:43:19 +0000 (14:43 +0200)
NM upstream would like to reduce periodic scanning, and that means
that clients should request scans themselves while their WiFi list
is open.  Similar to the Windows and macOS WiFi dialogs/lists.

https://bugzilla.gnome.org/show_bug.cgi?id=767918

js/ui/status/network.js

index fee703bed9ba3e8759c45539fb0548dead656b19..9f4293ab7ce2a98dbf23a9175fdf02bca5e58244 100644 (file)
@@ -5,6 +5,7 @@ const GObject = imports.gi.GObject;
 const Gio = imports.gi.Gio;
 const Gtk = imports.gi.Gtk;
 const Lang = imports.lang;
+const Mainloop = imports.mainloop;
 const NetworkManager = imports.gi.NetworkManager;
 const NMClient = imports.gi.NMClient;
 const NMGtk = imports.gi.NMGtk;
@@ -752,10 +753,9 @@ const NMWirelessDialog = new Lang.Class({
         this._updateSensitivity();
         this._syncView();
 
-        if (accessPoints.length == 0) {
-            /* If there are no visible access points, request a scan */
-            this._device.request_scan_simple(null);
-        }
+        this._scanTimeoutId = Mainloop.timeout_add_seconds(15, Lang.bind(this, this._onScanTimeout));
+        GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout');
+        this._onScanTimeout();
     },
 
     destroy: function() {
@@ -780,9 +780,19 @@ const NMWirelessDialog = new Lang.Class({
             this._airplaneModeChangedId = 0;
         }
 
+        if (this._scanTimeoutId) {
+            Mainloop.source_remove(this._scanTimeoutId);
+            this._scanTimeoutId = 0;
+        }
+
         this.parent();
     },
 
+    _onScanTimeout: function() {
+        this._device.request_scan_simple(null);
+        return GLib.SOURCE_CONTINUE;
+    },
+
     _activeApChanged: function() {
         if (this._activeNetwork)
             this._activeNetwork.item.setActive(false);